package exo1_1;

public abstract class Compte {
	protected String nomDetenteur;
	protected int numeroCompte;
	protected double solde;
    
	public Compte(String nom, int numero, double solde){
		this.nomDetenteur = nom;
		this.numeroCompte = numero;
		this.solde = solde;
	}

	public String getNomDetenteur(){
		return nomDetenteur;
	}
	
	public int getNumeroCompte() {
		return numeroCompte;
	}

	public double getSolde(){
		return solde;
	}
	
	@Override
	public String toString() {
		return "Compte [nomDetenteur=" + nomDetenteur + ", numeroCompte="
				+ numeroCompte + ", solde=" + solde + "]";
	}

	abstract public void crediter(double montant) throws CreditException;
	abstract public void debiter(double montant) throws DebitException, FermeCompteAutomatique;
	public void virement(Compte destinataire,double montant) throws DebitException, FermeCompteAutomatique,CreditException{
		this.debiter(montant);
		destinataire.crediter(montant);
	}

	public String getLigneSauvegardeCompte(){
		return this.getType() + ";" + this.nomDetenteur+ ";" + this.numeroCompte + ";" + this.solde;  
	}

	abstract public String getType();
}
